<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>Каталог сервисов</title>
<link href="ice.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<p><b>Каталог сервисов (Services Directory)</b></p>

<p>Каталог сервисов есть на каждом узле. Каталог сервисов содержит информацию об известных узлу сервисах, позволяет находить сервисы в сети, создавать новые сервисы и изменять информацию о сервисах.</p>

<p>
В каталоге сервисов имеются:<br>
<li>список типов сервисов, которые поддерживаются узлом
<li>список соответсивия сервис-подписчик, для маршрутизации сообщений сервисов подписчикам
<li>список известных узлу сервисов
</p>

<p>
Информация о сервисе:<br>
<li>Тип сервиса
<li>Название сервиса (до 256 печатаемых символов)
<li>Название сервиса-владельца (до 256 печатаемых символов)
<li>Описание сервиса (строка символов)
<li>Число подписчиков
<li>Адрес узла, на котором можно подписаться на сервис
<li>Рейтинг сервиса
<li>Список GUID владельцев
</p>


<p><b>Формат сообщений DNMP</b></p>
<p>Все сообщения каталога сервисов имеют тип <b>SRVD</b>.</p>

<p>
<u>Команда сервису</u><br>
Параметры:<br>
<b>cmd</b> - команда<br>
Данные:<br>
параметры команды<br>
</p>

<p>
<u>Данные</u><br>
Параметры:<br>
<b>data</b> - тип данных<br>
Данные:<br>
содержимое данных<br>
</p>

<p>
<u>Информация о сервисе</u><br>
Параметры:<br>
<b>type</b> - Тип сервиса<br>
<b>name</b> - Название сервиса (до 256 печатаемых символов)<br>
<b>parent</b> - Название сервиса-владельца (до 256 печатаемых символов)<br>
<b>abonent_count</b> - Число подписчиков<br>
<b>provider</b> - Адрес узла для подписки<br>
<b>rating</b> - Рейтинг сервиса<br>
<b>ownerNN</b> - Список GUID владельцев, где NN порядковый номер<br>
Данные:<br>
Описание сервиса (строка символов)<br>
</p>

<p><b>Команды:</b></p>

<p>
GET_TYPES<br>
Получить список типов сервисов, поддерживаемых узлом
</p>

<p>
GET_LIST_LOCAL &lt;фильтр&gt;<br>
Получить список имеющихся сервисов на узле
</p>

<p>
GET_LIST_SUBSCRIBED &lt;GUID_абонента&gt;<br>
Получить список имеющихся сервисов на узле
</p>

<p>
GET_LIST &lt;фильтр&gt;<br>
Получить список сервисов по заданным условиям. Выполняется поиск сервисов по всему сегменту сети.
</p>

<p>
GET_INFO &lt;type&gt; &lt;name&gt;<br>
Получить подробную информацию о сервисе
</p>

<p>
ADD_SERVICE &lt;type&gt; &lt;name&gt; &lt;owner GUID&gt;<br>
Добавить новый сервис. Если адрес-владелец не указан, то им становится отправитель команды. Если сервис уже существует, то возвращается сообщение об ошибке.
</p>

<p>
SET_PARENT &lt;type&gt; &lt;name&gt; &lt;parent name&gt;<br>
Установить вышестоящий сервис-родитель, которому будет подчинен данный сервис<br>
Доступ: владельцы сервиса
</p>

<p>
SET_OWNER &lt;type&gt; &lt;name&gt; &lt;owner GUID&gt;<br>
Очистить список узлов-владельцев сервиса и добавить указаный узел.<br>
Доступ: владельцы сервиса
</p>

<p>
ADD_OWNER &lt;type&gt; &lt;name&gt; &lt;owner GUID&gt;<br>
Добавить адрес в список владельцев сервиса<br>
Доступ: владельцы сервиса
</p>

<p>
DEL_OWNER &lt;type&gt; &lt;name&gt; &lt;owner GUID&gt;<br>
Удалить адрес из списка владельцев сервиса. Если это единственный владелец, то он не удаляется.<br>
Доступ: владельцы сервиса
</p>

<p>
SET_DESCR &lt;type&gt; &lt;name&gt; &lt;description&gt;<br>
Установить описание сервиса<br>
Доступ: владельцы сервиса
</p>

<p>
DEL_SERVICE &lt;type&gt; &lt;name&gt;<br>
Удалить сервис.<br>
Доступ: владельцы сервиса, владелец узла
</p>


<p><b>Данные:</b></p>

<p>
SERVICE_INFO<br>
Содержит информацию о сервисе.<br>
Параметры:<br>
<b>type</b> - тип сервиса<br>
<b>name</b> - название сервиса<br>
<b>parent</b> - имя вышестоящего сервиса-родителя<br>
<b>abonent_count</b> - число абонентов<br>
<b>provider</b> - адрес узла для подписки<br>
<b>rating</b> - рейтинг сервиса<br>
Данные:<br>
Описание сервиса (строка символов)<br>
</p>

<p>
SERVICES_LIST<br>
Данные:<br>
Содержит список сервисов в формате CSV.<br>
<b>type</b> - тип сервиса<br>
<b>name</b> - название сервиса<br>
<b>parent</b> - имя вышестоящего сервиса-родителя<br>
<b>abonent_count</b> - число абонентов<br>
<b>provider</b> - адрес узла для подписки<br>
<b>rating</b> - рейтинг сервиса<br>
</p>

<p>
SERVICES_LIST_LOCAL<br>
Данные:<br>
То же, что и SERVICES_LIST, но только сервисы узла.<br>
</p>

<p>
SERVICES_LIST_SUBSCRIBED<br>
Параметры:<br>
<b>abonent</b> - GUID абонента<br>
Данные:<br>
То же, что и SERVICES_LIST, но только сервисы, на которые подписан заданный абонент.<br>
</p>

<p>
ABONENTS_LIST<br>
Параметры:<br>
<b>type</b> - тип сервиса<br>
<b>name</b> - имя сервиса<br>
Данные:<br>
Содержит список GUID абонентов сервиса, разделенные переводом строки.<br>
</p>


</body>
</html>